package com.zelin.canal;


import com.alibaba.otter.canal.protocol.CanalEntry;
import com.xpand.starter.canal.annotation.*;

/**
 * 作用：
 * 作者：LZB
 * 类名：CanalEventDataListener
 * 时间：2021/11/11  10:50
 */

@CanalEventListener
public class CanalEventDataListener {
    /**
     * 功能描述:监听插入事件
     * 返回值:
     * 作者:LZB
     * 时间: 2021/11/11 10:53
     */
    @InsertListenPoint
    public void onEventInsert(CanalEntry.EventType eventType, CanalEntry.RowData rowData) {
        System.out.println("onEventInsert");
        System.out.println("------------------------------------------------------------------------------------");
        rowData.getAfterColumnsList().stream().forEach(c-> System.out.println(c.getName() + "->" + c.getValue()));
    }
    /**
     * 功能描述:监听修改事件
     * 返回值:
     * 作者:LZB
     * 时间: 2021/11/11 10:53
     */
    @UpdateListenPoint
    public void onEventUpdate(CanalEntry.EventType eventType, CanalEntry.RowData rowData) {
        System.out.println("onEventUpdate");
        System.out.println("------------------------------------------------------------------------------------");
        rowData.getAfterColumnsList().stream().forEach(c-> System.out.println(c.getName() + "->" + c.getValue()));

    }
    /**
     * 功能描述:监听删除事件
     * 返回值:
     * 作者:LZB
     * 时间: 2021/11/11 10:53
     */
    @DeleteListenPoint
    public void onEventDelete(CanalEntry.EventType eventType, CanalEntry.RowData rowData) {
        System.out.println("onEventDelete");
        System.out.println("------------------------------------------------------------------------------------");
        rowData.getBeforeColumnsList().stream().forEach(c-> System.out.println( c.getName() + "->" + c.getValue()));
    }

    /**
     * 功能描述:自定义监听
     * 返回值:
     * 作者:LZB
     * 时间: 2021/11/11 10:52
     */
    @ListenPoint(destination = "example",schema = "zyg_manager",table = {"tb_brand"},
            eventType = {
                    CanalEntry.EventType.UPDATE,
                    CanalEntry.EventType.INSERT,
                    CanalEntry.EventType.DELETE}
    )
    public void onEventCustomUpdate(CanalEntry.EventType eventType, CanalEntry.RowData rowData) {
        System.out.println("onEventCustomUpdate");
        System.out.println("------------------------------------------------------------------------------------");
        rowData.getAfterColumnsList().forEach((c) -> System.out.println( c.getName() + "->" + c.getValue()));
    }

}

